package cn.justforchris.blog.controller;

import cn.justforchris.blog.domain.Article;
import cn.justforchris.blog.domain.Comment;
import cn.justforchris.blog.query.CommentQuery;
import cn.justforchris.blog.query.QueryPage;
import cn.justforchris.blog.query.articleQuery;
import cn.justforchris.blog.service.ICommentService;
import cn.justforchris.util.JsonResult;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/comment")
public class CommentConntroller {

    @Autowired
    private ICommentService commentService;

    /**
     * 根据文章id查询评论,前端每个文章应该只展示该文章的评论,所以评论带有一个字段为文章id,用文章id字段来获取每个文章对应的评论
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public List<Comment> findCommentByArticleId(@PathVariable("id") Long id) {
        return commentService.findByArticleId(id);
    }

    /**
     * 新增或者修改评论的接口
     * @param comment
     * @return
     */
    @PutMapping
    public JsonResult addorUpdate(@RequestBody Comment comment){
        try {
            if(comment.getId()==null){
                commentService.add(comment);
            }else{
                commentService.update(comment);
            }
            return JsonResult.success();
        }catch (Exception e){
            e.printStackTrace();
            return JsonResult.error("添加失败");
        }
    }

    /**
     * 删除评论的接口
     * @param id
     * @return
     */
    @DeleteMapping("/{_id}")
    public JsonResult delete(@PathVariable("_id") String id){
        try {
            commentService.delete(id);
            return JsonResult.success();
        }catch (Exception e){
            e.printStackTrace();
            return JsonResult.error("删除失败");
        }
    }

    @PostMapping
    public PageInfo<Comment> queryPage(@RequestBody CommentQuery queryPage) {
        /*返回的数据是pagehelper的一个类,这个类创建的对象中储存的是查询出来的数据以及总条数(total)*/
        return commentService.queryPage(queryPage);

    }


}
